package domain

import (
	"github.com/hlhutu/gormplus"
	"ruoyi-go/internal/framework/db"
)

/**
 * 在线用户表 SysUserOnline
 */
type SysUserOnline struct {
	// 会话编号
	TokenId string `json:"tokenId" gorm:"column:token_id" form:"tokenId"`

	// 部门名称
	DeptName string `json:"deptName" gorm:"column:dept_name" form:"deptName"`

	// 用户名称
	UserName string `json:"userName" gorm:"column:user_name" form:"userName"`

	// 登录IP地址
	IpAddr string `json:"ipaddr" gorm:"column:ipaddr" form:"ipaddr"`

	// 登录地址
	LoginLocation string `json:"loginLocation" gorm:"column:login_location" form:"loginLocation"`

	// 浏览器类型
	Browser string `json:"browser" gorm:"column:browser" form:"browser"`

	// 操作系统
	OS string `json:"os" gorm:"column:os" form:"os"`

	// 登录时间
	LoginTime int64 `json:"loginTime" gorm:"column:login_time" form:"loginTime"`
}

// TableName 映射数据库表名
func (m SysUserOnline) TableName() string {
	return "sys_user_online"
}

// SysUserOnline 模型定义
type sysUserOnlineModel struct {
	gormplus.Model[SysUserOnline] // 使用泛型封装基础 CRUD 操作
}

// SysUserOnlineModelInst 单例变量初始化
var sysUserOnlineModelInst *sysUserOnlineModel

// SysUserOnlineModel 获取 SysUserOnline 单例模型
func SysUserOnlineModel() *sysUserOnlineModel {
	if sysUserOnlineModelInst == nil {
		// 将 SysUserOnline 注册到 GORM DB，并初始化
		sysUserOnlineModelInst = &sysUserOnlineModel{Model: gormplus.NewModel(SysUserOnline{}, db.GormDB)}
	}
	return sysUserOnlineModelInst
}
